Expand support for update metadata and tracking old values #69
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a follow-up for #60 to:
include_oldforDELETEstatements.include_old_only_when_changed).include_oldto a JSON array string).include_metadatafor inserts.include_metadatafor deletes with a specialUPDATE <table> SET _deleted = TRUEsyntax (we can't attach data to the delete otherwise).It also refactors some of the implementation details, in particular:
sqlite-rsversion, and then applies our fork that makesResultCodeimplementCloneandCopy.TableInfostruct.columnsarray of a schema table into a shared struct utilizing thestreaming_iteratorcreate. This makes it easier to pass custom iterators tojson_object_fragment, which is used to restrictinclude_oldto a list of columns.format!logic to create triggers by using inline references, making it easier to understand. (Eventually, I want to spend some time eventually to that further by e.g. usingwrite!, we're using lots of small allocations and duplicate logic here.)